﻿using log4net;
using PcaCore.DAL;
using PcaParqueos.BOL;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace PcaParqueos.DAL
{
    public class dTarifaAbonado
    {
        private static readonly ILog log = LogManager.GetLogger(typeof(dTarifaGeneral));

        #region public

        public static void Update(oTarifaAbonado tarifa)
        {
            try
            {
                //CREATE OR REPLACE FUNCTION pca_parqueos.fn_update_tarifa_abonado(varchar,--empresa_id $1
                //                 varchar,--oficina_id $2
                //                 bigint,--abonado_id $3
                //                 integer,--desencadenador_id $4
                //                 varchar,--moneda_id $5
                //                 numeric --monto $6
                //                 )RETURNS void 
                Core.ExecuteNonQuery("pca_parqueos.fn_update_tarifa_abonado",
                                      new oParametro(NpgsqlTypes.NpgsqlDbType.Varchar, tarifa.empresa_id),
                                      new oParametro(NpgsqlTypes.NpgsqlDbType.Varchar, tarifa.oficina_id),
                                      new oParametro(NpgsqlTypes.NpgsqlDbType.Integer, tarifa.abonado_id),
                                      new oParametro(NpgsqlTypes.NpgsqlDbType.Integer, tarifa.desencadenador_id),
                                      new oParametro(NpgsqlTypes.NpgsqlDbType.Varchar, tarifa.moneda_id),
                                      new oParametro(NpgsqlTypes.NpgsqlDbType.Numeric, tarifa.monto));

            }
            catch (Exception ex)
            {
                throw Core.LogException(log, ex, MethodBase.GetCurrentMethod().Name);
            }   
        }

        public static oVwTarifaAbonado Get(string empresaId,
                                           string oficinaId,
                                           long abonadoId)
        {
            try
            {
                //CREATE OR REPLACE FUNCTION pca_parqueos.fn_get_tarifa_abonado(varchar,--empresa_id $1
                //                  varchar,--oficina_id $2
                //                  bigint --abonado_id $3
                //                  )RETURNS SETOF pca_parqueos.vw_tarifas_abonados
                return Core.GetObjectDb<oVwTarifaAbonado>("pca_parqueos.fn_get_tarifa_abonado",
                                                           new oParametro(NpgsqlTypes.NpgsqlDbType.Varchar, empresaId),
                                                           new oParametro(NpgsqlTypes.NpgsqlDbType.Varchar, oficinaId),
                                                           new oParametro(NpgsqlTypes.NpgsqlDbType.Integer, abonadoId));
            }
            catch (Exception ex)
            {
                throw Core.LogException(log, ex, MethodBase.GetCurrentMethod().Name);
            }
        }

        #endregion
    }
}
